home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / cgraphix / kdrawcir.c < prev    next >
Text File  |  1986-05-08  |  1KB  |  49 lines

  1. /* «RM120»«PL99999»«TS4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76» */
  2. #include    <stdio.h>
  3. #define    EXTERN    extern
  4. #include    <typedef.h>
  5.  
  6.  
  7. void DrawCircleDirect(xr, yr, r, DirectModeLoc)
  8. int        xr, yr, r, DirectModeLoc;
  9. {
  10.     extern double    fabs();
  11.  
  12.     static int    n = 14;
  13.     static int    x[] =
  14.             {0,0,121,239,355,465,568,663,749,823,885,935,971,993,1000};
  15.     int        xk1, xk2, yk1, yk2, xp1, yp1, xp2, yp2;
  16.     double  xfact, yfact;
  17.     int        i;
  18.  
  19.     xfact = fabs(.001 * (double)r);
  20.     yfact = xfact*AspectGlb;
  21.     if (xfact > 0.0) {
  22.         xk1 = (int)(x[1]*xfact+0.5);
  23.         yk1 = (int)(x[n]*yfact+0.5);
  24.         for (i = 2; i <= n; i++) {
  25.             xk2 = (int)(x[i]*xfact+0.5);
  26.             yk2 = (int)(x[n-i+1]*yfact+0.5);
  27.             xp1 = xr-xk1;
  28.             yp1 = yr+yk1;
  29.             xp2 = xr-xk2;
  30.             yp2 = yr+yk2;
  31.             DrawLinW(xp1,yp1,xp2,yp2, DirectModeLoc);
  32.             xp1 = xr+xk1;
  33.             xp2 = xr+xk2;
  34.             DrawLinW(xp1,yp1,xp2,yp2, DirectModeLoc);
  35.             yp1 = yr-yk1;
  36.             yp2 = yr-yk2;
  37.             DrawLinW(xp1,yp1+1,xp2,yp2+1, DirectModeLoc);
  38.             xp1 = xr-xk1;
  39.             xp2 = xr-xk2;
  40.             DrawLinW(xp1,yp1+1,xp2,yp2+1, DirectModeLoc);
  41.             xk1 = xk2;
  42.             yk1 = yk2;
  43.         }
  44.     }
  45.     else
  46.         DP(xr,yr);
  47. }
  48.  
  49.